package shoppingmall.manage.service;

import shoppingmall.manage.pojo.CommodityOrder;
import shoppingmall.manage.dto.PageBean;

import java.util.Date;
import java.util.List;
import java.util.Map;


/**
 * 服务层接口-订单管理相关服务方法
 */
public interface CommodityOrderService {

    /**
     * 分页查询所有的平台订单信息
     */
    public PageBean getCommodityOrderList (int page, int pageSize);

    /**
     * 修改订单状态信息(通过订单id)
     */
    public boolean updateCommodityOrder(CommodityOrder commodityOrder);

    /**
     * 删除订单信息(通过订单id)
     */
    public boolean deleteCommodityOrder(String orderId);

    /***************************复杂业务***************************************/

    /**
     * 批量修改订单信息(通过字符串订单id  将已支付的订单状态---->已发货的订单状态)
     */
    public boolean updateOrderStateByOrderIds(List<String> orderIds, String orderState);

    /**
     * 批量删除订单(通过字符串订单id 数组集合，批量删除订单)
     */
    public boolean deleteOrdersByOrderIds(List<String> orderIds);

    /**
     * 按照选择的开始日期到结束日期筛选订单 startDate:"" endDate:""
     */
    public PageBean getCommodityOrderListByDate(Date startDate, Date endDate);

    /**
     * 按照订单状态筛选订单(未支付，已支付，待发货，已发货，运输中，已收货，已评价，已取消，已退货)
     */
    public PageBean getCommodityOrderListByState (String orderState);
    /**
     * 订单排序接口(根据下单时间升降序、订单更新时间升降序、订单总价升降序 进行排序)
     */
    public PageBean getCommodityOrderListSort (String fieldName, String sortRule);
    /**
     * 订单模糊搜索(根据订单号 或者 下单用户 进行模糊匹配)
     */
    public PageBean getCommodityOrderListByUserNameOrOrderId (Map<String, String> map);

    /*************************************************************************/

    /**
     * 创建一条订单信息(前台api接口应该做的)
     */
    public boolean saveCommodityOrder (CommodityOrder commodityOrder);
}
